﻿#pragma once

struct LinkedListNode
{
    LinkedListNode* next;
    LinkedListNode* rand;
    int value;

    LinkedListNode(int value)
    {
        this->value = value;
        next = nullptr;
        rand = nullptr;
    }
};

// 反向 单向链表
LinkedListNode* reverseLinkedList(LinkedListNode* head);

/**
 * 是否是环形单向链表?
 * @param head
 * @param startCircleNode 入环点
 */
bool isCircleLinkedList(LinkedListNode* head, LinkedListNode** startCircleNode);

// 获取无环单向链表的节点个数
int getLinkedListNodeCount(LinkedListNode* head);

// delete 单向链表
void delLinkedListNode(LinkedListNode* head);

// 打印单向链表的元素
void printLinkedList(LinkedListNode* head);